package com.ruoyi.common.utils.file;

import com.ruoyi.common.utils.TxtUtils;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Base64;

/**
 * Base64转pdf文件.
 *
 * @author :yanlixiong
 * @date :2025-02-24 12:58:21
 */
public class Base64ToPdfUtils {
    public static void main(String[] args) {
        // 示例 Base64 编码的 PDF 字符串
//        String base64 = TxtUtils.readToStr("D:\\home\\upload-ky-450\\pdf\\64.txt");
//        convert(base64,"D:\\home\\upload-ky-450\\pdf\\output.pdf");
    }

    /**
     * 转换处理.
     *
     * @param base64         the base 64
     * @param outputFilePath the output file path
     * @return the string
     * @author :yanlixiong
     * @date :2025-02-24 12:58:23
     */
    public static void convert(String base64, String outputFilePath) {
        try {
            // 提取真正的 Base64 数据
            String pureBase64Data = base64.substring(base64.indexOf(",") + 1);
            // 解码 Base64 字符串
            byte[] decodedBytes = Base64.getDecoder().decode(pureBase64Data);
            // 定义保存的文件路径
            try (FileOutputStream fos = new FileOutputStream(outputFilePath)) {
                // 将解码后的字节数组写入文件
                fos.write(decodedBytes);
            }
            System.out.println("Base64转pdf文件成功！");
        } catch (IOException e) {
            System.err.println("写入文件时发生错误：" + e.getMessage());
        } catch (IllegalArgumentException e) {
            System.err.println("Base64 解码失败：" + e.getMessage());
        }
    }
}

